
class Redprints:
    def __init__(self,name):
        self.name=name
        self.mound=[]

    #函数装饰器的知识已经忘记了
    def route(self,rule,**options):
        def decorator(f):
            self.mound.append((rule, f, options))
            return f
        return decorator

    def register(self,bp,prefix_url=None):
    #这句话非常精妙,不是高手都不敢乱用
    # 下面这句话表示，如果options中有endpoint就用这个endpoint的名字，没有就采用f.__name__
    # 没有5到6年的修为都使不出这招
        if prefix_url is None:
            prefix_url='/'+self.name
        for rule,f,options in self.mound:
            endpoint = options.pop("endpoint", f.__name__)
            bp.add_url_rule(prefix_url+rule, endpoint, f, **options)


